<!DOCTYPE HTML>

<html lang="en">
<head>

<title>ObjectIdentityImpl (spring-security-docs 5.6.3 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="ObjectIdentityImpl (spring-security-docs 5.6.3 API)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">

<div class="topNav"><a id="navbar.top">

</a>
<div class="skipNav"><a href="ObjectIdentityImpl.html#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="ObjectIdentityImpl.html#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="ObjectIdentityImpl.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="ObjectIdentityImpl.html#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="ObjectIdentityImpl.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">

</a></div>

</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>

<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.springframework.security.acls.domain</a></div>
<h2 title="Class ObjectIdentityImpl" class="title">Class ObjectIdentityImpl</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.springframework.security.acls.domain.ObjectIdentityImpl</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code>java.io.Serializable</code>, <code><a href="../model/ObjectIdentity.html" title="interface in org.springframework.security.acls.model">ObjectIdentity</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">ObjectIdentityImpl</span>
extends java.lang.Object
implements <a href="../model/ObjectIdentity.html" title="interface in org.springframework.security.acls.model">ObjectIdentity</a></pre>
<div class="block">Simple implementation of <a href="../model/ObjectIdentity.html" title="interface in org.springframework.security.acls.model"><code>ObjectIdentity</code></a>.
<p>
Uses <code>String</code>s to store the identity of the domain object instance. Also
offers a constructor that uses reflection to build the identity information.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../serialized-form.html#org.springframework.security.acls.domain.ObjectIdentityImpl">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">

</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="ObjectIdentityImpl.html#%3Cinit%3E(java.lang.Class,java.io.Serializable)">ObjectIdentityImpl</a></span>&#8203;(java.lang.Class&lt;?&gt;&nbsp;javaType,
java.io.Serializable&nbsp;identifier)</code></th>
<td class="colLast">
<div class="block">Constructor which uses the name of the supplied class as the <tt>type</tt>
property.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="ObjectIdentityImpl.html#%3Cinit%3E(java.lang.Object)">ObjectIdentityImpl</a></span>&#8203;(java.lang.Object&nbsp;object)</code></th>
<td class="colLast">
<div class="block">Creates the <code>ObjectIdentityImpl</code> based on the passed object instance.</div>
</td>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="ObjectIdentityImpl.html#%3Cinit%3E(java.lang.String,java.io.Serializable)">ObjectIdentityImpl</a></span>&#8203;(java.lang.String&nbsp;type,
java.io.Serializable&nbsp;identifier)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">

</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ObjectIdentityImpl.html#equals(java.lang.Object)">equals</a></span>&#8203;(java.lang.Object&nbsp;obj)</code></th>
<td class="colLast">
<div class="block">Important so caching operates properly.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>java.io.Serializable</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ObjectIdentityImpl.html#getIdentifier()">getIdentifier</a></span>()</code></th>
<td class="colLast">
<div class="block">Obtains the actual identifier.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ObjectIdentityImpl.html#getType()">getType</a></span>()</code></th>
<td class="colLast">
<div class="block">Obtains the "type" metadata for the domain object.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ObjectIdentityImpl.html#hashCode()">hashCode</a></span>()</code></th>
<td class="colLast">
<div class="block">Important so caching operates properly.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ObjectIdentityImpl.html#toString()">toString</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">

</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, finalize, getClass, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">

</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(java.lang.String,java.io.Serializable)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>ObjectIdentityImpl</h4>
<pre>public&nbsp;ObjectIdentityImpl&#8203;(java.lang.String&nbsp;type,
                          java.io.Serializable&nbsp;identifier)</pre>
</li>
</ul>
<a id="&lt;init&gt;(java.lang.Class,java.io.Serializable)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>ObjectIdentityImpl</h4>
<pre>public&nbsp;ObjectIdentityImpl&#8203;(java.lang.Class&lt;?&gt;&nbsp;javaType,
                          java.io.Serializable&nbsp;identifier)</pre>
<div class="block">Constructor which uses the name of the supplied class as the <tt>type</tt>
property.</div>
</li>
</ul>
<a id="&lt;init&gt;(java.lang.Object)">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ObjectIdentityImpl</h4>
<pre>public&nbsp;ObjectIdentityImpl&#8203;(java.lang.Object&nbsp;object)
                   throws <a href="IdentityUnavailableException.html" title="class in org.springframework.security.acls.domain">IdentityUnavailableException</a></pre>
<div class="block">Creates the <code>ObjectIdentityImpl</code> based on the passed object instance.
The passed object must provide a <code>getId()</code> method, otherwise an
exception will be thrown.
<p>
The class name of the object passed will be considered the <a href="ObjectIdentityImpl.html#type"><code>type</code></a>, so if
more control is required, a different constructor should be used.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>object</code> - the domain object instance to create an identity for.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="IdentityUnavailableException.html" title="class in org.springframework.security.acls.domain">IdentityUnavailableException</a></code> - if identity could not be extracted</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">

</a>
<h3>Method Detail</h3>
<a id="equals(java.lang.Object)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;equals&#8203;(java.lang.Object&nbsp;obj)</pre>
<div class="block">Important so caching operates properly.
<p>
Considers an object of the same class equal if it has the same
<code>classname</code> and <code>id</code> properties.
<p>
Numeric identities (Integer and Long values) are considered equal if they are
numerically equal. Other serializable types are evaluated using a simple equality.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../model/ObjectIdentity.html#equals(java.lang.Object)">equals</a></code>&nbsp;in interface&nbsp;<code><a href="../model/ObjectIdentity.html" title="interface in org.springframework.security.acls.model">ObjectIdentity</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>equals</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>obj</code> - object to compare</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the presented object matches this object</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><code>Object.equals(Object)</code></dd>
</dl>
</li>
</ul>
<a id="getIdentifier()">

</a>
<ul class="blockList">
<li class="blockList">
<h4>getIdentifier</h4>
<pre class="methodSignature">public&nbsp;java.io.Serializable&nbsp;getIdentifier()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../model/ObjectIdentity.html#getIdentifier()">ObjectIdentity</a></code></span></div>
<div class="block">Obtains the actual identifier. This identifier must not be reused to represent
other domain objects with the same <tt>javaType</tt>.
<p>
Because ACLs are largely immutable, it is strongly recommended to use a synthetic
identifier (such as a database sequence number for the primary key). Do not use an
identifier with business meaning, as that business meaning may change in the future
such change will cascade to the ACL subsystem data.
</p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../model/ObjectIdentity.html#getIdentifier()">getIdentifier</a></code>&nbsp;in interface&nbsp;<code><a href="../model/ObjectIdentity.html" title="interface in org.springframework.security.acls.model">ObjectIdentity</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the identifier (unique within this <tt>type</tt>; never <tt>null</tt>)</dd>
</dl>
</li>
</ul>
<a id="getType()">

</a>
<ul class="blockList">
<li class="blockList">
<h4>getType</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;getType()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../model/ObjectIdentity.html#getType()">ObjectIdentity</a></code></span></div>
<div class="block">Obtains the "type" metadata for the domain object. This will often be a Java type
name (an interface or a class) &ndash; traditionally it is the name of the domain
object implementation class.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../model/ObjectIdentity.html#getType()">getType</a></code>&nbsp;in interface&nbsp;<code><a href="../model/ObjectIdentity.html" title="interface in org.springframework.security.acls.model">ObjectIdentity</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the "type" of the domain object (never <tt>null</tt>).</dd>
</dl>
</li>
</ul>
<a id="hashCode()">

</a>
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;hashCode()</pre>
<div class="block">Important so caching operates properly.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../model/ObjectIdentity.html#hashCode()">hashCode</a></code>&nbsp;in interface&nbsp;<code><a href="../model/ObjectIdentity.html" title="interface in org.springframework.security.acls.model">ObjectIdentity</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>hashCode</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the hash</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><code>Object.hashCode()</code></dd>
</dl>
</li>
</ul>
<a id="toString()">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>toString</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>

<footer role="contentinfo">
<nav role="navigation">

<div class="bottomNav"><a id="navbar.bottom">

</a>
<div class="skipNav"><a href="ObjectIdentityImpl.html#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="ObjectIdentityImpl.html#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="ObjectIdentityImpl.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="ObjectIdentityImpl.html#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="ObjectIdentityImpl.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">

</a></div>

</nav>
</footer>
<script>if (window.parent == window) {(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-2728886-23', 'auto', {'siteSpeedSampleRate': 100});ga('send', 'pageview');}</script><script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"7040e6c73dfc97cf","token":"bffcb8a918ae4755926f76178bfbd26b","version":"2021.12.0","si":100}' crossorigin="anonymous"></script>
</body>
</html>
